package chatty.gui;
import java.util.regex.Pattern;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
/**
* A document filter that removes text based on a regular expression.
*
* @author tduva
*/
public class RegexDocumentFilter extends DocumentFilter {
private final Pattern pattern;
public RegexDocumentFilter(String regex) {
pattern = Pattern.compile(regex);
}
@Override
public void insertString(DocumentFilter.FilterBypass fb, int off, String str, AttributeSet attr) {
try {
fb.insertString(off, pattern.matcher(str).replaceAll(""), attr);
} catch (BadLocationException | NullPointerException ex) {
}
}
@Override
public void replace(DocumentFilter.FilterBypass fb, int off, int len, String str, AttributeSet attr) {
try {
if (str == null) {
fb.replace(off, len, str, attr);
} else {
fb.replace(off, len, pattern.matcher(str).replaceAll(""), attr);
}
} catch (BadLocationException | NullPointerException ex) {
}
}
}